#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/configfs.h>
#include <linux/kernel.h>
#include <linux/kobject.h>
#include <linux/device.h>
#include <linux/sysfs.h>

extern struct bus_type mybus;

void myrelease(struct device *dev)
{

    printk("This is myrelease\n");
};

struct device mydevice =
    {
        .init_name = "mydevice",   // 设备的初始化名称
        .bus = &mybus,             // 所属总线
        .release = myrelease,      // 设备的释放回调函数
        .devt = ((255 << 20 | 0)), // 设备号
};

// 模块的初始化函数
static int device_init(void)
{
    int ret;

    printk("device_init\n");

    ret = device_register(&mydevice); // 注册设备

    return 0;
}

// 模块退出函数
static void device_exit(void)
{
    printk("device_exit\n");

    device_unregister(&mydevice); // 取消注册设备
}

module_init(device_init); // 指定模块的初始化函数
module_exit(device_exit);

MODULE_LICENSE("GPL");     // 模块使用的许可证
MODULE_AUTHOR("fangchen"); // 模块的作者